from datetime import datetime

from django import template


def my_capfirst(value):
    return value.capitalize()


register = template.Library()
# Library 注册器对象
register.filter('my_capfirst', my_capfirst)  # 第一个调用时的方法名， 第二个定义的函数名


# 第二种注册方法
# 定义调用时使用的方法名
@register.filter('my_default')
def my_default(value, arg):
    return value if value else arg


# 三目运算

# 自定义标签
# 如果没有自定义调用时的名字，会将你的函数名默认为调用时使用的名字
@register.simple_tag()
def current_time(format_string):
    # 格式化操作
    # strftime = string format time
    return datetime.now().strftime(format_string)

@register.filter('time_since')
def time_since(value):
    now = datetime.now()
    # 单位 秒
    timestamp = (now-value).total_seconds()
    # total_seconds() 计算时间间隔的方法
    #   计算时间间隔 把当前时间 减去 传进来的时间=文章创建时间
    if timestamp<60:
        return '刚刚'
    elif 60<timestamp<60*60:
        # 计算‘出多少分钟
        res = int(timestamp/60)
        return f'{res}分钟前'
    elif 60*60<timestamp<60*60*24:
        res = int(timestamp/(60*60))
        return f'{res}小时前'
    elif 60*60*24<timestamp<60*60*24*30:
        res = int(timestamp/(60*60*24))
        return f'{res}天前'
    else:
        return value.strftime('%Y-%m-%d %H:%M:%S')
#  vale:发布时间
    # retun:显示时间
# 1.如果和当前时间 小于1分钟 显示 刚刚
# 2.如果大于1分钟小于1小时 显示 xx分钟前
# 3.如果大于1小时小于一天  显示 xx小时前
# 4.如果大于一天小于30天 显示xx天前
# 5.如果大于30天显示具体的发布时间




